package com.nekonomics
package types

/**
 *https://opendocs.alipay.com/support/01rax8
 *
 * 电脑网站支付
 * （1）支付宝钱包扫码支付：生成二维码使用支付宝钱包扫码唤起收银台后订单创建；
 *
 * （2）PC端登录支付：用户点击支付，输入账户与密码登录成功后，订单创建；
 *
 * 订单交易未创建
 * 检查该笔交易是否已创建订单，创建订单时间详见 什么时候生成支付宝订单。
 * 注意：支付接口并不是接口请求后就代表订单创建的，查询等接口若是在支付宝系统内没有查询到订单号trade_no等信息才会返回“ACQ.TRADE_NOT_EXIST（交易不存在）”。
 *
 */


enum AlipayTradeStatus {
  case WAIT_BUYER_PAY
  case TRADE_CLOSED
  case TRADE_SUCCESS
  case TRADE_FINISHED
  case NOT_CREATED // 用于建模支付宝订单未创建的情况，非官方的状态
  
}


object  AlipayTradeStatus {
  def fromString(s: String): Either[RuntimeException,AlipayTradeStatus] = s match {
    case "WAIT_BUYER_PAY" => Right(WAIT_BUYER_PAY)
    case "TRADE_CLOSED" => Right(TRADE_CLOSED)
    case "TRADE_SUCCESS" => Right(TRADE_SUCCESS)
    case "TRADE_FINISHED" => Right(TRADE_FINISHED)
    case _ => Left(new RuntimeException(s"未知的支付状态: $s"))
  }
}

